Software-driven calendar systems have become critical and informative tools across a variety of markets essentially wherever scheduling and calendaring has value. Examples of the importance of calendaring information (i.e., scheduling meetings, coordinating activities, referring to digitally-based calendar and notice systems, etc.) are apparent in virtually all levels of activities across most age groups, be the activities focused on work-based needs or personal matters. Additionally, digital calendars and digital agenda organizers have also become pervasive in traditionally non-calendar-based tools such as cell phones, personal computers, entertainment devices and the like.
As used herein, the terms “calendar” and “schedule” are intended to be used in their singular or plural meanings for digital, electronic or software-based applications and systems, and are further intended to include but not be limited to calendars that are web-based, resident in applications, reside on computer or personal electronic devices, present in mobile or fixed assets, code-based or rely on coded instructions through software programs or program products, and the like. The terms are further inclusive of calendars which are interactive with a user or users, real-time or locally-based, and include mechanisms and instructions to display their contents in various display mediums available to one or more users. The use of calendar herein is further intended to include timesheets, appointments, calendars, diaries, event listings, and physical calendars which are electronic and/or are capable of digital conversion directly or through an intermediary application, or other electronic transfer agent to a digital environment or file system.
As used herein, the term “device,” is intended to be inclusive of computer-based equipment such as desktops, laptops, servers, personal digital assistants (PDAs), mobile communication systems, phones, entertainment systems, and the like, whether fixed, mobile or capable of being moved, without limitation.
The pervasive use of calendars across diverse organizations, settings and social groups, has also facilitated the need for calendar information, such as content and meeting details, to be shared and coordinated with others who have common needs in the shared content. In many cases calendar events pertain to more than one person or are of interest to more than one person or need to be recorded on multiple calendars of the same person. In instances where multiple people are involved, conventional calendars provide sharing calendar events such as meeting invitations, group calendars, and allowing other users to view one's own calendar, a subset of one's own calendar, or one's free/busy time. Conventional calendaring systems also allow for users to specifically select one or more calendar events and export them from one calendar and into another calendar. Other conventional calendaring systems provide for synchronization of an entire calendar with another. Such systems typically provide for synchronization between a desktop/laptop calendar and a mobile device or between a server-based calendar and one or more client calendars. There are, however, limitations in these systems for sharing calendar events.
Meeting invitations provide a mechanism that works well when the persons who are interested are known to a meeting chair. They also provide for synchronization of changes made to the meeting by the chair to participants. The chair is able to ascertain who has declined, accepted, or tentatively accepted the meeting as well as see proposals for alternate meeting locations, times, and requests for information. Meeting invitations, however, fall short of addressing cases where the interested parties for the calendar event are not known to the meeting chair.
For example, a professional sports team may have a posted calendar of games for the season with opponent, location (home or away) and times. The sports team, however, would not feasibly be able to send meeting invitations to every fan (ticket-holding or not) who might want to have the calendar events for those games in their own calendars. Another limitation of a meeting invitation is that the chair defines the contents of the calendar event and the participant is unable to customize the fields of the calendar event within their own calendar without copying the event and manually changing it. Also, meeting invitations provide a mechanism for sharing only a single event with possible repeating occurrences. They do not, however, work well for a plurality of different events that are not repeating occurrences of the same event.
Further, all parts of a meeting event are typically visible to all meeting participants even if there are some items that are confidential to the meeting chair or a subset of the meeting participants. Finally, synchronization of meeting invitations does not work well when the parties involved in the meeting are utilizing different calendar software. In such cases one typically exports the calendar event for the meeting and sends the exported event to the meeting participants to import into their own calendars. A synchronization of changes to a meeting utilizing this single event export/import mechanism would require manual deletion of the old version of the event or else result in a duplicate meeting event being created.
Group calendars allow one or more users to manage the events in a calendar and allow one or more users to access the events in the group calendar. Users can easily see and change shared items, but once again the group of interested users must be known to each other and a coordinated effort must be made to direct the group of interested users to the group calendar. Further, users of a group calendar can typically see all fields of each calendar event on the group calendar and there is no way to restrict confidential fields to a subset of the group for one or more of the contained calendar events.
Users of a group calendar can typically specifically select and export one or more events from the group calendar and import them into another calendar, but there is no means to periodically synchronize changes between the group calendar and the individual calendars to which events have been exported. The interested party can manually modify an event after importing it to change how it appears in their own calendar to match their own preferences, but this process is tedious if dealing with multiple events.
It is also difficult to maintain such changes if changes to the event in the source calendar and necessitate that the event be re-exported into the target calendar. Some have tried to overcome the synchronization problem by creating calendar views that access multiple calendar databases and provide overlays, but this ties the calendar user to specific software and makes it difficult to synchronize such changes when a user has two copies of their own calendar (e.g.; one on their desktop computer and one on their mobile device).
Another mechanism for sharing calendar events is giving specific users access to one's own calendar or giving the general populous of users access to one's own calendar (i.e.: public access). In such implementations, one can typically mark one or more calendar events as “private” to prevent it from being viewed or one can restrict calendar access to only view “free” or “busy” time without providing any details on the calendar events. Further, when one is able to view calendar events from a calendar, one may be able to select one or more events to export from that calendar and import into another. Again, manual modification of an event after importing is possible, but we have the same difficulty that was previously noted when dealing with multiple events and problems synchronizing changes to the event from the source calendar. The mechanism of sharing one's own calendar with others lacks fine-grained control of visibility of calendar event fields and lacks the ability to automatically synchronize changes to the source calendar events in the target calendar.
Conventional calendar synchronization mechanisms provides for sharing of calendar events between two calendars typically belonging to the same user. Such synchronization mechanisms typically provide for synchronization of server-based calendars with client-based calendars or desktop/laptop calendars with mobile device/PDA calendars. These conventional mechanisms operate on the entire calendar rather than a subset of the calendar events within the calendar. These mechanisms typically offer two modes of synchronization. The first is a two-way synchronization where the two calendars are meant to be mirrors of each other and changes in each are reflected in the other. This mode of operation typically requires some sort of manual intervention or preference selection to resolve conflicts when they occur. The second is a master/subordinate relationship where the subordinate calendar is modified to match the master calendar after synchronization (master overwrites subordinate). Because these mechanisms synchronize the entire calendar database there is no means provided to synchronize the subordinate calendar with multiple master calendars and maintain the events from each of those masters. This is due to the fact that synchronization leads to deletion of events in the subordinate calendar and a complete overwrite with the events in the master calendar in order to cause it to match the master calendar.
Accordingly, using the traditional approaches, although able to provide calendar information in limited formats to limited audiences, they present challenges to communications and information sharing for present and future needs.
For instance, traditional approaches typically require that the users (i.e., participants, attendees, meeting coordinators, etc.) have common software applications or minimally reside on common networks with common database access. In effect, the traditional approaches are unable to accommodate broader participation than organizational-styled directories.
Traditional approaches also prevent an uninvited user from “adding” a calendar event to his own calendar unless he does so manually, whereafter, synchronization and updates of the particular event do not precipitate to the uninvited user unless he updates manually based on other information received through the organization.
Further, using a traditional approach, a viewer of a calendared event is unable to customize the displayed view for their own preferences. For instance, in certain meeting notices, the content may be excessive or CPU-intensive to display, such that a user may wish to not be distracted by the excessive content or to maintain the computer's abilities without a draw from a meeting notice. Using the traditional approach, customized or preferential masking is not possible. Similarly, a fine-grain masking of fields of content is unable to be performed using traditional approaches, thereby further limiting calendaring options for a user.
Still further, traditional approaches do not provide for users to authorize a first group of viewers for one group of events at one level of detail and another group of viewers for a second potentially-overlapping group of events at another level of detail.
Finally, traditional approaches for synchronization do not provide for synchronization of the contents of a subordinate client calendar with the contents of multiple master calendars thereby forming a union of the events in those master calendars on the client calendar.
Therefore, it is highly desired to be able to provide a solution which overcomes the shortcomings and limitations of the present art and more particularly provides a calendaring system and method for publishing groups of calendar events and subscribing to publications by mapping calendar events to predetermined categories of interest.
The present invention in accordance with its various implementations herein, addresses such needs.